home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
a_utils
/
ffccflow
/
ffccflow.lha
/
ffccc+flow
/
ffccc
/
SKIPTP.f
< prev
next >
Wrap
Text File
|
1992-07-31
|
3KB
|
88 lines
SUBROUTINE SKIPTP(ITYPE,STRING,ICC1,ICC2,HOLFLG,KPOS,ILEV)
*-----------------------------------------------------------------------
* positions on the last character of a string of the requested type
* input
* ITYPE 1 = numeric
* 2 = alpha
* 3 = alpha-numeric
* 4 = special
* 5 = FORTRAN-name
* 6 = expression ( no [,] at level 0 )
* STRING string
* ICC1 first ch, in string
* ICC2 last - - -
* HOLFLG if TRUE, hollerith included
* output
* KPOS position of last ch. of given type, if ICC1 is of that
* type, otherwise = 0
* ILEV level (including KPOS) relative to input level 0
*-----------------------------------------------------------------------
LOGICAL HOLFLG
CHARACTER STRING*(*),STEMP*1
include 'CONVEX.h'
ILEV=0
KPOS=0
NCNT=0
ISSTR=0
ILBASE=-1
JC=ICC1-1
10 JC=JC+1
IF (JC.GT.ICC2) GOTO 999
STEMP=STRING(JC:JC)
*--- skip blanks outside strings
IF (STEMP.EQ.' '.AND.ISSTR.EQ.0) GOTO 10
IF(STEMP.EQ.'{') THEN
*--- start of character string
ISSTR=1
IF (.NOT.HOLFLG) THEN
ISSTR=0
I=INDEX(STRING(JC:ICC2),'}')
IF (I.EQ.0) GOTO 999
JC=I+JC-2
ENDIF
GOTO 10
ELSEIF(STEMP.EQ.'}') THEN
ISSTR=0
IF(ITYPE.EQ.6) THEN
KPOS=JC
ELSE
GOTO 10
ENDIF
ELSEIF(ITYPE.EQ.1) THEN
IF (NUMCH(STEMP)) KPOS=JC
ELSEIF(ITYPE.EQ.2) THEN
IF (ALPHCH(STEMP)) KPOS=JC
ELSEIF(ITYPE.EQ.3) THEN
IF (ANUMCH(STEMP)) KPOS=JC
ELSEIF(ITYPE.EQ.4) THEN
IF (SPECCH(STEMP)) THEN
KPOS=JC
IF (STEMP.EQ.'(') THEN
ILEV=ILEV+1
ELSEIF (STEMP.EQ.')') THEN
ILEV=ILEV-1
ENDIF
ENDIF
ELSEIF(ITYPE.EQ.5) THEN
IF (NCNT.EQ.0) THEN
IF (ALPHCH(STEMP)) THEN
KPOS=JC
NCNT=NCNT+1
ENDIF
ELSEIF (ANUMCH(STEMP)) THEN
KPOS=JC
ENDIF
ELSEIF(ITYPE.EQ.6) THEN
IF (KPOS.EQ.0.AND..NOT.(ANUMCH(STEMP).OR.STEMP.EQ.'('.OR.STEMP.
+ EQ.'+'.OR.STEMP.EQ.'-'.OR.STEMP.EQ.''''))GOTO 999
IF (STEMP.EQ.'(') THEN
ILEV=ILEV+1
ELSEIF (ILBASE.LT.0) THEN
ILBASE=ILEV
ENDIF
IF (STEMP.EQ.')') ILEV=ILEV-1
IF ((STEMP.NE.','.OR.ILEV-ILBASE.GT.0).AND.ILEV.GE.0) KPOS=JC
ENDIF
IF (KPOS.EQ.JC) GOTO 10
999 END